/*******************************************************************************
*
*   FILE NAME:
*       GameTime.h - GameTime class definition
*
*   DESCRIPTION:
*       Snapshot of the game timing state expressed in values that can be used
*       by variable-step (real time) or fixed-step (game time) games.
*
*******************************************************************************/
#pragma once

#include "TimeSpan.h"
#include "Types.h"

class GameTime
{
public:
    GameTime( void );
    GameTime( const TimeSpan& elapsed_time, boolean running_slowly, const TimeSpan& total_time );
    GameTime( const GameTime& other );
    ~GameTime( void );

    GameTime& operator=( const GameTime& other );

    TimeSpan GetElapsedTime( void ) const;
    boolean IsRunningSlowly( void ) const;
    TimeSpan GetTotalTime( void ) const;

    void SetElapsedTime( const TimeSpan& elapsed_time );
    void SetRunningSlowly( boolean running_slowly );
    void SetTotalTime( const TimeSpan& total_time );

protected:

private:
    TimeSpan mElapsedTime;
    boolean mRunningSlowly;
    TimeSpan mTotalTime;
};
